#ifndef MATRICESO3_H
#define MATRICESO3_H

/** Fichier définissant une classe représentant les matrices du groupe @f$SO( 3,
 * R )@f$.
 *
 * Ce fichier contient la définition de la classe MatriceSO3.
 *
 * @file MatriceSO3.hpp
 * @author Johan "Solo" Luisier
 *
 * @date 24 Juin 2011
 */

#include "MatriceO3.hpp"

/** Classe implémentant les matrices du groupe @f$ SO( 3, R ) @f$.
 *
 * Le groupe SO( 3, R ) contient les matrices de rotations, c'est à
 * dire les matrices dont le déterminant est +1. La classe MatriceSO3
 * implémente de telles matrices.
 *
 * @author Johan "Solo" Luisier
 *
 * @date 24 Juin 2011
 *
 * @class MatriceSO3 "MatriceSO3.hpp" "Algebre/MatriceSO3.hpp"
 */
class MatriceSO3 : public MatriceO3
{
public:
    MatriceSO3();
    MatriceSO3( const Vecteur& x, const Vecteur& y, const Vecteur& z );
    MatriceSO3( const MatriceSO3& mat );
    MatriceSO3( const MatriceO3& mat );
    MatriceSO3( const MatriceGL3& mat );
    MatriceSO3( const Matrice3x3& mat );
    virtual ~MatriceSO3();
    MatriceSO3& operator=( const Matrice3x3& mat );
private:
    void verifie() const;
};

#endif // MATRICESO3_H
